<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>

<head>
    <base href="/oa1/"/>
    <title>襄阳蓝芯智能化办公系统 - 角色权限配置</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="static/bootstrap-3.3.5/css/bootstrap.css" rel="stylesheet">
    <script src="static/jquery/jquery-1.10.2.min.js"></script>
    <script src="static/bootstrap-3.3.5/js/bootstrap.min.js"></script>
</head>
<body>

<%-- 提交表单：动态回显角色ID --%>
<form action="qx/role/editRoleFun" id="editRoleFunForm" method="post">
    <input type="hidden" name="oid" value="${role.oid}"> <%-- 动态绑定角色ID --%>
    <input type="hidden" name="fids" id="fids">
</form>

<div class="panel panel-primary">
    <div class="panel-heading">
        <%-- 动态回显角色名称 --%>
        <h4 class="panel-title">编辑 [ ${role.roleName} ] 角色下权限</h4>
    </div>

    <div class="panel-body">
        <form action="" id="myform" method="post" class="form-horizontal" role="form">
            <%-- 动态循环生成权限列表（适配你的JS选择器） --%>
            <c:forEach items="${functionMap}" var="entry">
                <%-- 父权限对象：entry.key是QxFunction（parentid为0或null的顶级权限） --%>
                <div class="col-md-4 form-group">
                        <%-- 父权限复选框
                             注意：id必须为"parent_${entry.key.oid}"，与你的checkAll函数中的$("#parent_" + parentId)匹配
                             勾选状态：判断当前父权限ID是否在已选列表中
                        --%>
                    <label>
                        <input type="checkbox"
                               id="parent_${entry.key.oid}"  <%-- 与JS的$("#parent_" + parentId)对应 --%>
                               onclick="checkAll(${entry.key.oid})"  <%-- 传递父权限ID --%>
                               value="${entry.key.oid}"  <%-- 权限ID值 --%>
                               <c:if test="${checkedFuncIds.contains(entry.key.oid)}">checked</c:if> <%-- 已选则勾选 --%>
                        />${entry.key.functionName} <%-- 动态显示父权限名称 --%>
                    </label>

                        <%-- 子权限列表：entry.value是当前父权限下的子权限集合 --%>
                    <c:forEach items="${entry.value}" var="childFunc">
                        <div class="col-md-11 col-md-offset-1">
                                <%-- 子权限复选框
                                     注意：name必须为"child_${entry.key.oid}"，与你的checkChild函数中的$("input[name='child_" + parentId + "']")匹配
                                --%>
                            <label>
                                <input type="checkbox"
                                       name="child_${entry.key.oid}"  <%-- 与JS的name选择器对应 --%>
                                       onclick="checkChild(${entry.key.oid})"  <%-- 传递父权限ID --%>
                                       value="${childFunc.oid}"  <%-- 子权限ID值 --%>
                                       <c:if test="${checkedFuncIds.contains(childFunc.oid)}">checked</c:if> <%-- 已选则勾选 --%>
                                />${childFunc.functionName} <%-- 动态显示子权限名称 --%>
                            </label>
                        </div>
                    </c:forEach>
                </div>
            </c:forEach>

            <%-- 操作按钮（保持不变） --%>
            <div class="form-group col-md-12">
                <div class="col-md-10  col-md-offset-2">
                    <a type="button" href="javascript:history.back()" class="btn btn-info">返回</a>
                    <button type="button" id="editRoleFunBtn" class="btn btn-success">提交信息</button>
                </div>
            </div>
        </form>
    </div>
</div>

<%-- 你的JS方法（无需修改，保持原样） --%>
<script type="text/javascript">
    // 父权限全选/取消（控制子权限）
    function checkAll(parentId) {
        var isChecked = $("#parent_" + parentId).prop("checked");
        $("input[name='child_" + parentId + "']").prop("checked", isChecked);
    }

    // 子权限勾选变化（同步父权限状态）
    function checkChild(parentId) {
        var total = $("input[name='child_" + parentId + "']").length;
        var checked = $("input[name='child_" + parentId + "']:checked").length;
        // 所有子权限都勾选时，父权限勾选；否则取消
        $("#parent_" + parentId).prop("checked", total > 0 && total === checked);
    }

    // 提交权限配置
    $(document).ready(function() {
        $("#editRoleFunBtn").click(function() {
            // 收集所有选中的权限ID（父+子）
            var checkedIds = [];
            $("input[type='checkbox']:checked").each(function() {
                checkedIds.push($(this).val());
            });
            // 设置到隐藏域（逗号分隔）
            $("#fids").val(checkedIds.join(","));
            // 提交表单
            $("#editRoleFunForm").submit();
        });
    });

    // AJAX错误处理
    $(document).ajaxError(function(event, xhr) {
        if (xhr.status === 403) {
            document.location.href = xhr.getResponseHeader("url");
        } else if (xhr.status !== 200) {
            alert("服务器错误，状态码：" + xhr.status);
        }
    });
</script>
</body>
</html>
